/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package poker;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.io.Serializable;
import java.util.Vector;
import prop.Carta;

/**
 *
 * @author pol
 */
public class AreaDibujoApuesta extends AreaDibujo implements Serializable {
    private final int[] valorMoneda = { 1, 5, 10, 50, 100, 500 };
    private final Color[] colorMoneda = {
        Color.green,
        Color.red,
        Color.yellow,
        Color.magenta,
        Color.blue,
        Color.gray
    };

    private Ventana vent;
    private int vApuesta, vApuestaMax, vSaldo, vApuestaMesa;
    private String nombreJug;
    private int[] monedas;
    private Vector cartas;

    public AreaDibujoApuesta(Ventana ven, String nombreJug, int dineroJug, int apuestaMesa, Vector cartas) {
        vent = ven;
        monedas = new int[] { 0, 0, 0, 0, 0, 0 };
        vApuestaMesa = apuestaMesa;
        vApuestaMax = dineroJug;
        if(vApuestaMax > vApuestaMesa) vApuesta = apuestaMesa;
        else vApuesta = dineroJug;
        this.nombreJug = nombreJug;
        this.cartas = cartas;
        inicializaMonedas(vApuesta);
        repaint();
    }

    private void finalizarApuesta() {
        vent.finalizarApuesta(vApuesta);
    }

    void inicializaMonedas(int n) {
        for (int i = 5; i >= 0; --i) {
            monedas[i] = 0;
            while (n >= valorMoneda[i]) {
                n -= valorMoneda[i];
                ++monedas[i];
            }
        }
    }

    @Override
    public void clickRecibido(int x, int y) {
        if (x >= 350 && x <= 350 + 250 && y >= 180 && y <= 180 + 30) {
            finalizarApuesta();
            return;
        }
        for (int i = 0; i < 6; ++i) {
            int x1 = 20 + 100*i;
            int x2 = x1 + 80;
            int y1 = 250;
            int y2 = y1 + 25;
            if (x >= x1 && x <= x2 && y >= y1 && y <= y2) {
                if (vApuesta + valorMoneda[i] <= vApuestaMax) {
                    ++monedas[i];
                    vApuesta += valorMoneda[i];
                }
            }
        }
        for (int i = 0; i < 6; ++i) {
            int x1 = 20 + 100*i;
            int x2 = x1 + 80;
            int y1 = 420;
            int y2 = y1 + 25;
            if (x >= x1 && x <= x2 && y >= y1 && y <= y2) {
                if (monedas[i] > 0) {
                    --monedas[i];
                    vApuesta -= valorMoneda[i];
                }
            }
        }
        repaint();
    }

    private void pintaMoneda(int x, int y, int n, Graphics g) {
        g.setColor(Color.black);
        g.fillOval(x, y + 4, 2*35, 35);
        g.setColor(colorMoneda[n]);
        g.fillOval(x, y + 3, 2*35, 35);
        g.setColor(Color.black);
        g.fillOval(x, y, 2*35, 35);
        g.setColor(colorMoneda[n]);
        g.fillOval(x + 2*1, y + 1, 2*33, 33);
        g.setColor(Color.white);
        g.fillOval(x + 2*6, y + 6, 2*23, 23);
        g.setColor(Color.black);
        g.drawOval(x + 2*6, y + 6, 2*23, 23);
        g.setFont(new Font(null, Font.BOLD, 12));
        g.drawString(Integer.toString(valorMoneda[n]), x + 22, y + 22);
    }

    private void pintaMonedas(Graphics g) {
        for (int i = 0; i < 6; ++i) {
            g.setColor(new Color(0, 192, 0));
            g.drawRect(20 + 100*i, 250, 80, 195);
            g.fillRect(20 + 100*i, 250, 80, 25);
            g.fillRect(20 + 100*i, 420, 80, 25);
            g.setColor(Color.black);
            g.setFont(new Font(null, Font.BOLD, 18));
            if (vApuesta + valorMoneda[i] <= vApuestaMax)
                g.drawString("+", 50 + 100*i, 267);
            if (monedas[i] > 0)
                g.drawString("-", 53 + 100*i, 437);
            g.drawString(Integer.toString(valorMoneda[i]) + " €", 35 + 100*i, 463);

            for (int j = 0; j < monedas[i]; ++j)
                pintaMoneda(20 + 100*i + 5, 380 - 6*j, i, g);
        }
    }

    private void pintaCartas(Graphics g) {
        for (int i = 0; i < cartas.size(); ++i)
            super.pintaCarta(300 + 50*i, 30, (Carta) cartas.get(i), g);
    }

    @Override
    public void paint(Graphics g) {
        pintaFondo(g);
        g.setColor(new Color(255, 255, 0));
        g.setFont(new Font(null, Font.BOLD, 15));
        g.drawString(nombreJug + ", te toca apostar", 30, 60);
        g.drawString("Apuesta de la partida: " + vApuestaMesa + " €", 30, 120);
        g.drawString("Tu apuesta: " + Integer.toString(vApuesta) + " €", 30, 150);
        g.drawString("Saldo en tu cuenta: " + vApuestaMax + " €", 30, 180);

        pintaMonedas(g);

        g.setColor(new Color(0, 64, 0));
        g.fillRect(350, 180, 250, 30);
        g.setColor(new Color(255, 255, 0));
        g.setFont(new Font(null, Font.BOLD, 15));
        String s = "VOY";
        if (vApuesta < vApuestaMesa) s = "NO VOY";
        else if (vApuesta > vApuestaMesa) s = "VOY Y SUBO";
        g.drawString(s, 430, 200);

        pintaCartas(g);
    }
}
